package penjat;



import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.LinkedList;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.UIManager;



public class GUI_no_funciona extends JFrame implements ActionListener {

    /* Part grafica */
    private char lletraPulsada;
    private boolean firstTime = true;
    private boolean mostrarInstruccions = false;
    private JButton[] lletres;
    private JPanel panel1; /* panell per les lletres*/
    private JPanel panel2; /* panell per la imatge*/
    private JPanel panel3; /* per les etiquetes */
    private JLabel text; /* per la paraula amb guions */
    private JLabel missatges; /* guanya o perd i nº intents*/
    private JTextArea instruccions = new JTextArea();
    private ImageIcon imatges[];
        
    /* Part funcional */
    private int maxIntents = 6;
    private LinkedList<String> paraulesEnCurs;
    private File diccionariEnCurs;
    private GestioFitxers gf = new GestioFitxers();
    private JocPenjat joc;

    private void carregarImatgesParaules() {
        imatges = new ImageIcon[8];
      //  imatges[0] = new ImageIcon(Toolkit.getDefaultToolkit().
      //          createImage(getClass().getResource("/img/0.JPG")));
        /* etc... */
    }

    private void colocarMenu() {
        JMenu menuFitxer;
        JMenu menuAjuda;
        JMenuBar barra;
        menuFitxer = new JMenu("Fitxer");
        menuFitxer.setMnemonic('F');
        JMenuItem obrirMenu = new JMenuItem("Nova Paraula = Nou Joc");
        obrirMenu.setMnemonic('O');
        menuFitxer.add(obrirMenu);
        /* per cada opcio del menu un ActionListener */
        obrirMenu.addActionListener(new GestioNovaPartida());
        /******************************************************************/
        JMenuItem importarSpanishMenu = new JMenuItem("Importar diccionari");
        importarSpanishMenu.setMnemonic('I');
        menuFitxer.add(importarSpanishMenu);
        /* per cada opcio del menu un ActionListener */
        importarSpanishMenu.addActionListener(new GestioImportar());
        /******************************************************************/
        JMenuItem afegirMenu = new JMenuItem("Afegir paraula al diccionari");
        afegirMenu.setMnemonic('A');
        menuFitxer.add(afegirMenu);
        /* per cada opcio del menu un ActionListener */
        afegirMenu.addActionListener(new GestioAfegirParaula());
        /******************************************************************/
        JMenuItem tancarMenu = new JMenuItem("Tancar");
        tancarMenu.setMnemonic('T');
        menuFitxer.add(tancarMenu);
        /* per cada opcio del menu un ActionListener */
        tancarMenu.addActionListener(new GestioTancar());

        /* el menu s'ha d'inserir en una barra de menu */
        barra = new JMenuBar();
        setJMenuBar(barra);
        barra.add(menuFitxer);
        /******************************************************************************/
        /* Falta Menu Ajuda */
        
    }

    private void colocarLletres() {
        char lletra = 'A';
        panel1 = new JPanel();
        panel1.setBackground(Color.white);
        panel1.setLayout(new GridLayout(4, 7));
        lletres = new JButton[28];
        /* etc... */
    }

    private void colocarObjectesGrafics() {
	    
        /* ample, altura en pixels */
        setSize(500, 500);
        setVisible(true);      
        colocarMenu();
        setLayout(new BorderLayout());
        setResizable(false);
        colocarLletres();
        add(panel1, "North");
        panel2 = new JPanel();
        panel2.setBackground(Color.white);
        //borde de color negre
        panel2.setBorder(BorderFactory.createLineBorder(Color.black));
        instruccions = new JTextArea();
        instruccions.setEditable(false);
        panel2.add(instruccions);
        add(panel2, "Center");
        panel3 = new JPanel();
        panel3.setLayout(new GridLayout(1, 2));
        text = new JLabel();
        text.setFont(new Font("Monospaced", Font.BOLD, 20));
        panel3.add(text);
        missatges = new JLabel("");
        missatges.setFont(new Font("Monospaced", Font.BOLD, 15));
        panel3.add(missatges);
        add(panel3, "South");
    }

    public GUI_no_funciona() {
        super("El Penjat");
        /* Per defecte s'agafa una paraula sempre.
         * Si l'usuari utilitza els menús es canvia la paraula 
         */
        /* instanciar un nou joc del penjat
         actualitzar la llista de paraules en curs*/             
        carregarImatgesParaules();
        colocarObjectesGrafics();
        addWindowListener(new java.awt.event.WindowAdapter() {

            public void windowClosing(WindowEvent winEvt) {
                /* guardar la llista en curs al fitxer del diccionari en curs*/
                
                  // coses a fer amb els fitxers
                
                System.exit(0);
            }
        });      
        /* mostrar els guions i quants intents queden */
        
        repaint();
    }

    
    public void paint(Graphics g) {
        super.paint(g);
        /* A FER :aqui es pinten les imatges segons el nº d'errors
         * també es mostren els missatges segons l'estat del joc
         * Aquí està la teca important del joc
         */
    }

    public void actionPerformed(ActionEvent e) {
        /* Aqui s'avalua la lletra pulsada amb un clic sobre el botó corresponent*/
       
        joc.avaluar(lletraPulsada);
       
        repaint();
    }

    
    

    /* classes internes per als menus*/
    class GestioNovaPartida implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            /* A FER:s'activa una nova partida
             al final no us oblideu de cridar a repaint()
             */
        }
    }

    /* classe interna per als menus*/
    class GestioImportar implements ActionListener {

        private JFileChooser selector;

        @Override
        public void actionPerformed(ActionEvent ev) {
            /* Look and Feel */
            String nativeLF = UIManager.getSystemLookAndFeelClassName();
            try {
                UIManager.setLookAndFeel(nativeLF);
            } catch (Exception e) {
            }
            selector = new JFileChooser();
            /* seleccionar nomes fitxers */
            selector.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
            /* mostrar quadre de dialeg obrir fitxers */
            selector.showOpenDialog(null);
            
            /* A FER: obrir el fitxer escollit i omplir la llista de paraules en curs
             * amb el contingut del fitxer
             */

        }// fi metode actionPerformed de GestioImportar
    }

    /* classe interna per als menus*/
    class GestioAfegirParaula implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            /* A FER: demanar una paraula i afegir-la a la llista en curs*/
        }
    }

    class GestioInstruccions implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            /* A FER: mostrar instruccions dintre del panell*/

        }
    }

    class GestioAbout implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            /* A FER:mostrar una finestreta d'about amb el vostre nom i la data*/
        }
    }

    class GestioTancar implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            /* A FER:guardar la llista en curs al fitxer del diccionari en curs*/
            
            System.exit(0);
        }
    }

    public static void main(String[] args) {
        GUI_no_funciona ini = new GUI_no_funciona();
    }
}
